
/**
 * 
 * @param objeto jquery grid
 * @param columna columna que queremos devolver el valor
 * @returns
 */
function valorGridIdUnico(objeto, columna)
{
	//Posición de la fila
	var rowindex = parseInt($(objeto).jqxGrid('getselectedrowindex'));
	
	//Los datos de la fila, devuelve un array()
    var data = $(objeto).jqxGrid('getrowdata', rowindex);
    
    return data[columna];
}

/**
 * 
 * @param ancho
 * @param alto
 * @param id Se muestra el id en el título
 * @param desc Se muestra el texto en el título
 */
function muestraVentanaHTML(ancho, alto, valor, desc)
{
	$('#wrapper').append("<div id='jqxWindow'><div id='jqxWindowHeader'></div><div id='jqxWindowContent'></div></div>");
	$("#jqxWindow").jqxWindow({ width: ancho, height: alto, ismodal: true });
	
	$('#jqxWindow').jqxWindow('setTitle', valor + ' - ' + desc);
	$('#jqxWindow').jqxWindow({ isModal: true });
	
	//Al cerrar la ventana eliminamos el HTML
    $('#jqxWindow').bind('closed', function (event) {
    	$('#jqxWindow').remove();
	});
}

/**
 * Creaa una nueva tab
 * @param objeto
 * @param menuArray
 */
function nuevaTab(objeto, menuArray)
{
	var id = objeto.attr('id');
	var text = objeto.text();
	var idTab = 'tab'+id;
	var idGrid = 'jqxGrid'+id;

    var length = $('#ulTabsTitle').find('li').length;
	
    var existe = $.inArray(id, menuArray);

    if(existe >0)
    {
    	$('#jqxTabs').jqxTabs('select', existe); 
    }
    else
    {
    	$('#jqxTabs').jqxTabs('addAt', length, text, '');              	
      	$('#jqxTabs').jqxTabs('hideCloseButtonAt', 0);
      	menuArray[length] = id;

		//Añadimos el id en el tab
		$('#jqxTabs > div:eq(1)').attr('id', 'tabWrapperMain');
		$('#tabWrapperMain > div:eq('+length+')').attr('id', idTab);
		$('#'+idTab).append('<div id="'+idGrid+'"></div>');
		
		//Llamamos al grid correspondiente
		mainGrid(id);
		
    }
    return id;
}

var delay = (function(){
	var timer = 0;
	return function(callback, ms){
		clearTimeout (timer);
		timer = setTimeout(callback, ms);
	};
})();

/**
 * En función del nombre del menú
 * llama a la función para la creación
 * de Grid y eventos del mismo
 * @param idMenu
 */
function mainGrid(idMenu)
{
	switch(idMenu)
	{
	case 'mnuClientesActivos':
		mnuReservasGrid(idMenu, 'activos');
	  break;
	case 'mnuClientesAnulados':
		mnuReservasGrid(idMenu, 'anulados');
		break;	
	default:
//	  code to be executed if n is different from case 1 and 2
	}
}

function gridSource(idMenu, refrescar)
{
	window.console.log(refrescar);
	window.console.log('#jqxGrid'+idMenu);
	switch(idMenu)
	{
	case 'mnuClientesActivos':
		var url = '/clientes/fetchall/estado/activos';
		// prepare the data
	    var source =
	    {
	        datatype: 'json',
	        datafields: [
	        	{ name: 'id_clientes' },
	            { name: 'nombre' },
	            { name: 'apellidos' },
	            { name: 'nif'},
	            { name: 'pais'},
	            { name: 'cod_tipo_clie'},
	        ],
	        id: 'id',
	        url: url,
	        root: 'data'
	    };
	    
	    
	    if(refrescar == 'refresh'){
	    	$('#jqxGrid'+idMenu).jqxGrid({ source: source });
	    }
		break;
	case 'mnuClientesAnulados':
		var url = '/clientes/fetchall/estado/anulados';
		// prepare the data
	    var source =
	    {
	        datatype: 'json',
	        datafields: [
	        	{ name: 'id_clientes' },
	            { name: 'nombre' },
	            { name: 'apellidos' },
	            { name: 'nif'},
	            { name: 'pais'},
	            { name: 'cod_tipo_clie'},
	        ],
	        id: 'id',
	        url: url,
	        root: 'data'
	    };
	    if(refrescar == 'refresh')
	    	$('#jqxGrid'+idMenu).jqxGrid({ source: source });
		break;	
	default:
	}
	
    return source;
}
function mnuReservasGrid(idMenu, estado)
{	
	
	var grid = '#jqxGrid'+idMenu;
	var theme = '',	alto = 75;
	
	source = gridSource(idMenu, 'noRefresh');
    
    var dataAdapter = new $.jqx.dataAdapter(source);

    $(grid).jqxGrid(
    {
        width: '99%',
        height: '99%',
        pagesize: 50,
        source: dataAdapter,
        pagesizeoptions: ['50', '75', '100'],
        sortable: true,
        pageable: true,
        filterable: true,
        theme: theme,
        columnsresize: true,
        scrollbarsize: 15,
        columns: [
          { text: 'ID Cliente', dataField: 'id_clientes', width: 80, cellsalign: 'right' },
          { text: 'Nombre', dataField: 'nombre', minwidth: 100 },
          { text: 'Apellidos', dataField: 'apellidos', minwidth: 100 },
          { text: 'NIF / Pasaporte', dataField: 'nif', width: 180 },
          { text: 'Pa&iacute;s', dataField: 'pais', width: 80, cellsalign: 'right' },
          { text: 'Tipo', dataField: 'cod_tipo_clie', width: 90, cellsalign: 'right', cellsformat: 'c2' },                  
        ]
    });
    
    //Double Click
    $(grid).bind('rowdoubleclick', function (event) 
	{
    	var url = '/clientes/edit/value/';
		id = valorGridIdUnico($(grid), 'id_clientes');
	    muestraVentanaHTML(700, 520, id, valorGridIdUnico($(grid), 'nombre'));
     	$.ajax({
		    data: '',
		    type: 'GET',
		    dataType: 'html',
		    url: url+id,
		    success: function(resultado){ 
		    	$('#jqxWindowContent').html(resultado);
			}
   		});
	});
}
